/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Studio7i;

import java.util.*;

/**
 *
 * @author Grupo 5
 */
class AdmReserva {

    private List<Reserva> reservas = new ArrayList<Reserva>();

    public String registrarReserva(Sala sala, String dia, double horaInicial, double horaFinal, List<Instrumento> instrumentosAd, List<Servicio> serviciosAd) {

        Reserva reserva = new Reserva(sala, dia, horaInicial, horaFinal, instrumentosAd, serviciosAd);
        int cont = 0;
        for (Reserva listar : reservas) {

            if (listar.getSala().getLocal().getNombre().equals(reserva.getSala().getLocal().getNombre()) || listar.getSala().getNombre().equals(reserva.getSala().getNombre()) || listar.getDia().equals(reserva.getDia())) {
                if (listar.getHoraInicial() <= reserva.getHoraInicial() && reserva.getHoraInicial() <= listar.getHoraFinal()) {
                    cont++;
                }
            }
        }
        if (cont > 0) {
            System.out.println("---------------------------------------------------------");
            System.out.println("La Sala ya esta ocupada el dia " + reserva.getDia()+ " a las " + reserva.getHoraInicial()); 
            System.out.println("         ¡Te recomendamos escoger otro horario!");
            System.out.println("---------------------------------------------------------");
            return "Ocupada";

        } else {

            reservas.add(reserva);

            int index = reservas.lastIndexOf(reserva);

            System.out.println("---------------------------------------------------------");
            System.out.println("                     RESRERVA:");
            System.out.println("---------------------------------------------------------");
            System.out.println("NOMBRE DE SALA: " + reserva.getSala().getNombre());
            System.out.println("NOMBRE DE LOCAL: " + reserva.getSala().getLocal().getNombre());
            System.out.println("DIRECCION DE LOCAL: " + reserva.getSala().getLocal().getDireccion());
            System.out.println("DIA: " + reserva.getDia());
            System.out.println("HORA INCIAL: " + reserva.getHoraInicial());
            System.out.println("HORA FINAL: " + reserva.getHoraFinal());
            System.out.println("CAPACIDAD MAXIMA " + reserva.getSala().getCapacidadSala());
            

            double duracion = (horaFinal - horaInicial);
            double ctotal = duracion * reserva.getSala().getCosto();

            System.out.println("COSTO TOTAL: " + ctotal + " por " + duracion + " horas");
            System.out.println("---------------------------------------------------------");

            return "Reserva completada con exito";

        }
    }

    public String mostrarResultadoReservas(AdmReserva admReserva, String nLocal, String nSala, String bDia) {

        int cont = 0;
        String resultado = "Encontrada";

        for (Reserva listar : admReserva.getReserva()) {
            if (listar.getSala().getLocal().getNombre().equals(nLocal) && listar.getSala().getNombre().equals(nSala) && listar.getDia().equals(bDia)) {
                cont++;
                System.out.println("---------------------------------------------------------");
                System.out.println("                     RESRERVA:");
                System.out.println("---------------------------------------------------------");
                System.out.println("NOMBRE DE SALA: " + listar.getSala().getNombre());
                System.out.println("NOMBRE DE LOCAL: " + listar.getSala().getLocal().getNombre());
                System.out.println("DIRECCION DE LOCAL: " + listar.getSala().getLocal().getDireccion());
                System.out.println("DIA: " + listar.getDia());
                System.out.println("HORA INCIAL: " + listar.getHoraInicial());
                System.out.println("HORA FINAL: " + listar.getHoraFinal());

            }
        }
        if (cont == 0) {
            System.out.println("Reserva no encontrada");
            resultado = "No encontrada";
        }
        return resultado;
    }

    public List<Reserva> getReserva() {
        return reservas;
    }

    public String mostrarDetalleReserva(Sala sala, String dia, double horaInicial, double horaFinal, List<Instrumento> instrumentosAd, List<Servicio> serviciosAd) {

        System.out.println("---------------------------------------------------------");
        System.out.println("                     RESRERVA:");
        System.out.println("---------------------------------------------------------");
        System.out.println("INSTRUMENTOS: ");
        List<Instrumento> ins = new ArrayList(sala.getInstrumentos());
        int i = ins.size();
        for (int x = 0; x < i; x++) {
            System.out.println("---------------------------------------------------");
            System.out.println("tipo: " + ins.get(x).getTipo());
            System.out.println("marca: " + ins.get(x).getMarca());
            System.out.println("modelo: " + ins.get(x).getModelo());
            System.out.println("caracteristica: " + ins.get(x).getCaracteristicas());
            System.out.println("---------------------------------------------------");
        }
        System.out.println("INSTRUMENTOS ADICIONALES: ");
        List<Instrumento> insAd = new ArrayList(instrumentosAd);
        int in = insAd.size();
        for (int x = 0; x < in; x++) {
            System.out.println("---------------------------------------------------");
            System.out.println("tipo: " + insAd.get(x).getTipo());
            System.out.println("marca: " + insAd.get(x).getMarca());
            System.out.println("modelo: " + insAd.get(x).getModelo());
            System.out.println("caracteristica: " + insAd.get(x).getCaracteristicas());
            System.out.println("---------------------------------------------------");
        }
        System.out.println("SERVICIOS: ");
        List<Servicio> serv = new ArrayList(sala.getServicios());
        int se = serv.size();
        for (int x = 0; x < se; x++) {
            System.out.println("---------------------------------------------------");
            System.out.println("Descripción: " + serv.get(x).getDescripcion());
            System.out.println("costo: " + serv.get(x).getCosto());
            System.out.println("---------------------------------------------------");
        }
        System.out.println("SERVICIOS ADICIONALES: ");
        List<Servicio> servAd = new ArrayList(serviciosAd);
        int ser = servAd.size();
        for (int x = 0; x < ser; x++) {
            System.out.println("---------------------------------------------------");
            System.out.println("Descripción: " + servAd.get(x).getDescripcion());
            System.out.println("costo: " + servAd.get(x).getCosto());
            System.out.println("---------------------------------------------------");

        }
        return "ok";
    }
}